package br.com.dallasmotopecas.comum.agenda.controller;

import java.sql.Connection;

import javax.faces.context.ExternalContext;

import br.com.dallasmotopecas.comum.agenda.model.AgendaSolicitacaoAjudaModel;
import br.com.dallasmotopecas.comum.agenda.vo.AgendaSolicitacaoAjudaVo;
import br.com.dallasmotopecas.util.controller.AbstractController;
import br.com.dallasmotopecas.util.exception.CampoObrigatorioException;
import br.com.dallasmotopecas.util.exception.ClasseNaoEncontradaException;
import br.com.dallasmotopecas.util.exception.ConexaoException;
import br.com.dallasmotopecas.util.exception.InserirObjetoException;

public class AgendaSolicitacaoAjudaController extends AbstractController
{
	public AgendaSolicitacaoAjudaController(Connection connection) throws ConexaoException
	{
		super(connection);
	}

	public AgendaSolicitacaoAjudaController(ExternalContext externalContext) throws ClasseNaoEncontradaException, ConexaoException
	{
		super(externalContext);
	}
	
	private void campoObrigatorio(final AgendaSolicitacaoAjudaVo agendaSolicitacaoAjudaVo) throws CampoObrigatorioException
	{
		if (agendaSolicitacaoAjudaVo.getDataSolicitacao() == null)
			throw new CampoObrigatorioException("Por Favor Preencha a Data da Solicitação de Ajuda");
		
		if (agendaSolicitacaoAjudaVo.getUsuarioSolicitante().getId() == 0)
			throw new CampoObrigatorioException("Por Favor Preencha o Usuário Solicitante de Ajuda");
		
		if (agendaSolicitacaoAjudaVo.getUsuarioSolicitado().getId() == 0)
			throw new CampoObrigatorioException("Por Favor Preencha o Usuário Solicitado da Ajuda");
		
		if (agendaSolicitacaoAjudaVo.getClienteVo().getId() == 0)
			throw new CampoObrigatorioException("Por Favor Preencha Cliente para Qual Precisa de Ajuda para Atendimento");
		
		if (agendaSolicitacaoAjudaVo.getDescricaoSolicitacao() == null || agendaSolicitacaoAjudaVo.getDescricaoSolicitacao().isEmpty())
			throw new CampoObrigatorioException("Por Favor Preencha a Descrição da Ajuda para Atendimento");
	}
	
	public void inserirSolitacaoAjuda(final AgendaSolicitacaoAjudaVo agendaSolicitacaoAjudaVo) throws CampoObrigatorioException, InserirObjetoException
	{
		AgendaSolicitacaoAjudaModel agendaSolicitacaoAjudaModel = null;
		
		try
		{
			if (agendaSolicitacaoAjudaVo != null)
			{
				campoObrigatorio(agendaSolicitacaoAjudaVo);
				agendaSolicitacaoAjudaModel = new AgendaSolicitacaoAjudaModel(getConnection());
				agendaSolicitacaoAjudaModel.inserirSolicitacaoAjuda(agendaSolicitacaoAjudaVo);
			}
		}
		catch (InserirObjetoException e)
		{
			throw e;
		}
		finally
		{
			agendaSolicitacaoAjudaModel = null;
		}
	}
}
